﻿using System;
using Windows.UI.Xaml;
using GalaSoft.MvvmLight;

namespace com.IronOne.BoardPACWinAppBO.Meeting
{
    public class MeetingModel : ObservableObject
    {
        public int MeetingId { get; set; }
        public DateTime Date { get; set; }
        public string StartTime { get; set; }
        public string EndTime { get; set; }
        public byte IsTentative { get; set; }
        public int CategoryId { get; set; }
        public int SubCategoryId { get; set; }
        //public string MeetingName { get; set; }
        /// <summary>
        /// The <see cref="MeetingName" /> property's name.
        /// </summary>
        public const string MeetingNamePropertyName = "MeetingName";

        private string _meetingName = "";

        /// <summary>
        /// Sets and gets the MeetingName property.
        /// Changes to that property's value raise the PropertyChanged event. 
        /// </summary>
        public string MeetingName
        {
            get
            {
                return _meetingName;
            }

            set
            {
                if (_meetingName == value)
                {
                    return;
                }

                _meetingName = value;
                RaisePropertyChanged(MeetingNamePropertyName);
            }
        }

        public string Info { get; set; }
        public string Description { get; set; }
        public int MeetingType { get; set; }
        public string MeetingOrganizer { get; set; }
        public byte MeetingStatus { get; set; }
        public string MemberAttendence { get; set; }
        public string MemberIndividualAttendance { get; set; }
        public string AttendenceReason { get; set; }
        public string Address { get; set; }
        public string Venue { get; set; }
        public string Longitude { get; set; }
        public string Latitude { get; set; }
        public string MeetingNote { get; set; }
        public string Actions { get; set; }
        public DateTime? LastUpdatedDateTime { get; set; }
        public int SubCategoryOrder { get; set; }
        public string DateDisplayText { get; set; }
        public string CircularIconSource { get; set; }
        public string MeetingStatusIconSource { get; set; }
        public string TileBgColor { get; set; }
        public string StripBgColor { get; set; }
        public string MeetingStatusDisplayText { get; set; }

        /// <summary>
        ///     0: Read, 1: New, 2: Amended
        /// </summary>
        public int PaperNotificationStatus { get; set; }

        public string MeetingStatusSideIconSource { get; set; }
        public string MeetingStatusSideIconBgColor { get; set; }
        public Visibility CommentIconShowHide { get; set; }
        public Visibility MeetingLocationShowHide { get; set; }
        public int CommentsCount { get; set; }
        public string CommentsCountDisplay { get; set; }
        public string TimeDisplayText { get; set; }
        public Visibility TimeDisplayPanelDisplay { get; set; }
        public HorizontalAlignment DateDisplayPanelAlignment { get; set; }
        public Visibility MeetingRoomVisibility { get; set; }
        public Visibility MeetingAtVisibility { get; set; }
        public Visibility ParticipationStatusVisibility { get; set; }
        public string MeetingInfoHeading { get; set; }
        public string ParticipantsInfoHeading { get; set; }
        //public string DateTimeDisplayText { get; set; }
        /// <summary>
        /// The <see cref="DateTimeDisplayText" /> property's name.
        /// </summary>
        public const string DateTimeDisplayTextPropertyName = "DateTimeDisplayText";

        private string _dateTimeDisplayText = "";

        /// <summary>
        /// Sets and gets the DateTimeDisplayText property.
        /// Changes to that property's value raise the PropertyChanged event. 
        /// </summary>
        public string DateTimeDisplayText
        {
            get
            {
                return _dateTimeDisplayText;
            }

            set
            {
                if (_dateTimeDisplayText == value)
                {
                    return;
                }

                _dateTimeDisplayText = value;
                RaisePropertyChanged(DateTimeDisplayTextPropertyName);
            }
        }
        public Visibility ShowCircularMeetingDate { get; set; }
        public string DateDisplayPanelMargin { get; set; }
    }
}